import dayjs = require("dayjs");

export class apiResponse {
  /**
   * -1:错误，通用错误代码，错误原因请见msg
   */
  public static ERROR = -1

  /**
   * 0:成功
   */
  public static OK = 200

  /**
   * 1:用户已下线，或者登录状态不正确，需要重新登录
   */
  public static OFFLINE = 1

  /**
   * 2:无权操作，未授权
   */
  public static NO_AUTHORITY = 2

  /**
   * 返回失败
   */
  public static error(message: string, code?: number): apiRes<any> {
    const dto = new apiRes()
    dto.message = message
    dto.code = code || this.ERROR
    dto.time = dayjs().format("YYYY-MM-DD HH:mm:ss")
    return dto
  }

  /**
   * 返回成功，包含数据
   */
  public static success<T>(data?: T): apiRes<T> {
    const dto = new apiRes<T>()
    dto.message = 'ok'
    dto.code = this.OK
    dto.data = data
    dto.time = dayjs().format("YYYY-MM-DD HH:mm:ss")

    return dto
  }

  /**
   * 返回自定义状态码，自定义消息，自定义数据
   */
  public static json(code: number, message: string, data?: any): apiRes<any> {
    const dto = new apiRes()
    dto.code = code
    dto.message = message
    dto.data = data
    dto.time = dayjs().format("YYYY-MM-DD HH:mm:ss")
    return dto
  }
}

export class apiRes<T> {
  code: number

  message: string

  time: string

  data: T
}

export class ResPageData {
  /**
   * 一共多少页
   */
  pageTotal: number

  /**
   * 每页记录数，当前页记录数量
   */
  pageSize: number

  /**
   * 当前页码，从1开始；第一页从1开始
   */
  pageNo: number

  /**
   * 总共有多少记录
   */
  itemTotal: number

  /**
   * 当前页数据列表
   */
  items: any[]
}
